package com.cwl.mc.controller;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.cwl.common.api.ApiRequest;
import com.cwl.common.dto.UEResult;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;

import java.util.Map;

/**
 * 功能描述：
 *
 * @author cwledit
 * @date 2019/6/26
 */
@Slf4j
public class BaseController {

    protected UEResult doService(ApiRequest apiRequest) {
        return null;
    }

    protected ApiRequest getApiRequest(String content, Map<String, Object> paramRequest){
        log.info("content"+content);
        log.info("paramRequest"+ JSON.toJSONString(paramRequest));
        if (paramRequest == null && StringUtils.isEmpty(content)){
            return null;
        }
        JSONObject param;
        if (paramRequest != null && paramRequest.size()>0){
            param = new JSONObject(paramRequest);
        }else {
            param = JSON.parseObject(content);
        }
        if (param == null){
            return null;
        }
        ApiRequest apiRequest = new ApiRequest(param);
        return apiRequest;
    }

    /**
     * 这里做公共的接口验证
     * @param apiRequest
     * @return
     */
    public UEResult preValidate(ApiRequest apiRequest){
//		DateTime endDate = DateUtil.offsetMinute(apiRequest.fetchTimestamp(),5);
//		if (endDate.before(DateUtil.date())){
//			return UEResult.create().fail("请求超时，请检查时间戳").build();
//		}
        String appKey = apiRequest.fetchAppKey();

        /** 验证ak **/
//        UeAppToken appToken = redisService.get("appKey_"+appKey, UeAppToken.class);
//        if (appToken == null){
//            appToken = UeAppToken.DAO.findById(appKey);
//            if(appToken == null){
//                return UEResult.create().fail("应用不存在:"+appKey).build();
//            }
//        }
//        if (!appToken.getIsEnable()){
//            return UEResult.create().fail("应用已禁用:"+appKey).build();
//        }
//        if (!appToken.getMchNo().equals(apiRequest.fetchMchNo())){
//            return UEResult.error("请求非法: 商户号与AppKey不匹配");
//        }

        /** 验证签名 **/
//		if (!ApiSignUtils.validateSign(apiRequest,appToken.getAppSecret())){
//			return UEResult.error("签名错误");
//		}
        return UEResult.success();
    }

}
